home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / TextUtils.p < prev    next >
Text File  |  1996-05-01  |  8KB  |  266 lines

  1. {
  2.      File:        TextUtils.p
  3.  
  4.      Contains:    Text Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.0 through System 8
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT TextUtils;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __TEXTUTILS__}
  28. {$SETC __TEXTUTILS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC TextUtilsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __SCRIPT__}
  38. {$I Script.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __OSUTILS__}
  41. {$I OSUtils.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __TEXTOBJECTS__}
  44. {$I TextObjects.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __NUMBERFORMATTING__}
  47. {$I NumberFormatting.p}
  48. {$ENDC}
  49. {$IFC UNDEFINED __TIMEOBJECTS__}
  50. {$I TimeObjects.p}
  51. {$ENDC}
  52. {$IFC UNDEFINED __STRINGCOMPARE__}
  53. {$I StringCompare.p}
  54. {$ENDC}
  55.  
  56. {$PUSH}
  57. {$ALIGN MAC68K}
  58. {$LibExport+}
  59.  
  60. {
  61.  
  62.     Here are the current System 7 routine names and the translations to the older forms.
  63.     Please use the newer forms in all new code and migrate the older names out of existing
  64.     code as maintainance permits.
  65.     
  66.     NEW NAME                    OLD NAMEs                    OBSOLETE FORM (no script code)
  67.  
  68.     FindScriptRun
  69.     FindWordBreaks                                            NFindWord, FindWord
  70.     GetIndString            
  71.     GetString
  72.     Munger
  73.     NewString                
  74.     SetString                
  75.     StyledLineBreak
  76.     TruncString
  77.     TruncText
  78.  
  79.     UpperString ($A054)            UprString, UprText
  80.     UppercaseText                SCUpperText (a only)        UpperText ($A456)
  81.     LowercaseText                                            LwrString, LowerText, LwrText ($A056)
  82.     StripDiacritics                                            StripText ($A256)
  83.     UppercaseStripDiacritics                                StripUpperText ($A656)
  84.  
  85.  
  86. }
  87. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  88. {  Type for truncWhere parameter in TruncString, TruncText  }
  89.  
  90. TYPE
  91.     TruncCode                            = INTEGER;
  92.  
  93. CONST
  94.                                                                 {  Constants for truncWhere argument in TruncString and TruncText  }
  95.     truncEnd                    = 0;                            {  Truncate at end  }
  96.     truncMiddle                    = $4000;                        {  Truncate in middle  }
  97.     smTruncEnd                    = 0;                            {  Truncate at end - obsolete  }
  98.     smTruncMiddle                = $4000;                        {  Truncate in middle - obsolete  }
  99.                                                                 {  Constants for TruncString and TruncText results  }
  100.     notTruncated                = 0;                            {  No truncation was necessary  }
  101.     truncated                    = 1;                            {  Truncation performed  }
  102.     truncErr                    = -1;                            {  General error  }
  103.     smNotTruncated                = 0;                            {  No truncation was necessary - obsolete  }
  104.     smTruncated                    = 1;                            {  Truncation performed    - obsolete  }
  105.     smTruncErr                    = -1;                            {  General error - obsolete  }
  106.  
  107.  
  108. TYPE
  109.     StyledLineBreakCode                    = SInt8;
  110.  
  111. CONST
  112.     smBreakWord                    = 0;
  113.     smBreakChar                    = 1;
  114.     smBreakOverflow                = 2;
  115.  
  116.  
  117. TYPE
  118.     ScriptRunStatusPtr = ^ScriptRunStatus;
  119.     ScriptRunStatus = RECORD
  120.         script:                    SInt8;
  121.         runVariant:                SInt8;
  122.     END;
  123.  
  124.     BreakTablePtr = ^BreakTable;
  125.     BreakTable = RECORD
  126.         charTypes:                PACKED ARRAY [0..255] OF CHAR;
  127.         tripleLength:            INTEGER;
  128.         triples:                ARRAY [0..0] OF INTEGER;
  129.     END;
  130.  
  131.     NBreakTablePtr = ^NBreakTable;
  132.     NBreakTable = RECORD
  133.         flags1:                    SInt8;
  134.         flags2:                    SInt8;
  135.         version:                INTEGER;
  136.         classTableOff:            INTEGER;
  137.         auxCTableOff:            INTEGER;
  138.         backwdTableOff:            INTEGER;
  139.         forwdTableOff:            INTEGER;
  140.         doBackup:                INTEGER;
  141.         length:                    INTEGER;                                {  length of NBreakTable  }
  142.         charTypes:                PACKED ARRAY [0..255] OF CHAR;
  143.         tables:                    ARRAY [0..0] OF INTEGER;
  144.     END;
  145.  
  146. {  The following functions are new names that work on 68k and PowerPC  }
  147. FUNCTION Munger(h: Handle; offset: LONGINT; ptr1: UNIV Ptr; len1: LONGINT; ptr2: UNIV Ptr; len2: LONGINT): LONGINT;
  148.     {$IFC NOT GENERATINGCFM}
  149.     INLINE $A9E0;
  150.     {$ENDC}
  151. FUNCTION NewString(theString: Str255): StringHandle;
  152.     {$IFC NOT GENERATINGCFM}
  153.     INLINE $A906;
  154.     {$ENDC}
  155. PROCEDURE SetString(theString: StringHandle; strNew: Str255);
  156.     {$IFC NOT GENERATINGCFM}
  157.     INLINE $A907;
  158.     {$ENDC}
  159. FUNCTION GetString(stringID: INTEGER): StringHandle;
  160.     {$IFC NOT GENERATINGCFM}
  161.     INLINE $A9BA;
  162.     {$ENDC}
  163. PROCEDURE GetIndString(VAR theString: Str255; strListID: INTEGER; index: INTEGER);
  164. FUNCTION StyledLineBreak(textPtr: Ptr; textLen: LONGINT; textStart: LONGINT; textEnd: LONGINT; flags: LONGINT; VAR textWidth: Fixed; VAR textOffset: LONGINT): StyledLineBreakCode;
  165.     {$IFC NOT GENERATINGCFM}
  166.     INLINE $2F3C, $821C, $FFFE, $A8B5;
  167.     {$ENDC}
  168. FUNCTION TruncString(width: INTEGER; VAR theString: Str255; truncWhere: TruncCode): INTEGER;
  169.     {$IFC NOT GENERATINGCFM}
  170.     INLINE $2F3C, $8208, $FFE0, $A8B5;
  171.     {$ENDC}
  172. FUNCTION TruncText(width: INTEGER; textPtr: Ptr; VAR length: INTEGER; truncWhere: TruncCode): INTEGER;
  173.     {$IFC NOT GENERATINGCFM}
  174.     INLINE $2F3C, $820C, $FFDE, $A8B5;
  175.     {$ENDC}
  176. PROCEDURE FindWordBreaks(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; breaks: BreakTablePtr; VAR offsets: OffsetTable; script: ScriptCode);
  177.     {$IFC NOT GENERATINGCFM}
  178.     INLINE $2F3C, $C012, $001A, $A8B5;
  179.     {$ENDC}
  180. PROCEDURE LowercaseText(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  181.     {$IFC NOT GENERATINGCFM}
  182.     INLINE $3F3C, $0000, $2F3C, $800A, $FFB6, $A8B5;
  183.     {$ENDC}
  184. PROCEDURE UppercaseText(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  185.     {$IFC NOT GENERATINGCFM}
  186.     INLINE $3F3C, $0400, $2F3C, $800A, $FFB6, $A8B5;
  187.     {$ENDC}
  188. PROCEDURE StripDiacritics(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  189.     {$IFC NOT GENERATINGCFM}
  190.     INLINE $3F3C, $0200, $2F3C, $800A, $FFB6, $A8B5;
  191.     {$ENDC}
  192. PROCEDURE UppercaseStripDiacritics(textPtr: Ptr; len: INTEGER; script: ScriptCode);
  193.     {$IFC NOT GENERATINGCFM}
  194.     INLINE $3F3C, $0600, $2F3C, $800A, $FFB6, $A8B5;
  195.     {$ENDC}
  196. FUNCTION FindScriptRun(textPtr: Ptr; textLen: LONGINT; VAR lenUsed: LONGINT): ScriptRunStatus;
  197.     {$IFC NOT GENERATINGCFM}
  198.     INLINE $2F3C, $820C, $0026, $A8B5;
  199.     {$ENDC}
  200. {$ENDC}
  201. {  FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  202. {$IFC FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE }
  203. PROCEDURE UpperString(VAR theString: Str255; diacSensitive: BOOLEAN);
  204. {  Old routine name but no new names are mapped to it: }
  205. PROCEDURE UprText(textPtr: Ptr; len: INTEGER);
  206.     {$IFC NOT GENERATINGCFM}
  207.     INLINE $301F, $205F, $A054;
  208.     {$ENDC}
  209. {$ENDC}
  210. {  FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE }
  211. {
  212.     The following functions are old names, but are required for PowerPC builds
  213.     because InterfaceLib exports these names, instead of the new ones.
  214. }
  215. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  216. PROCEDURE FindWord(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; breaks: BreakTablePtr; VAR offsets: OffsetTable);
  217.     {$IFC NOT GENERATINGCFM}
  218.     INLINE $2F3C, $8012, $001A, $A8B5;
  219.     {$ENDC}
  220. PROCEDURE NFindWord(textPtr: Ptr; textLength: INTEGER; offset: INTEGER; leadingEdge: BOOLEAN; nbreaks: NBreakTablePtr; VAR offsets: OffsetTable);
  221.     {$IFC NOT GENERATINGCFM}
  222.     INLINE $2F3C, $8012, $FFE2, $A8B5;
  223.     {$ENDC}
  224. PROCEDURE LwrText(textPtr: Ptr; len: INTEGER);
  225.     {$IFC NOT GENERATINGCFM}
  226.     INLINE $301F, $205F, $A056;
  227.     {$ENDC}
  228. PROCEDURE LowerText(textPtr: Ptr; len: INTEGER);
  229.     {$IFC NOT GENERATINGCFM}
  230.     INLINE $301F, $205F, $A056;
  231.     {$ENDC}
  232. PROCEDURE StripText(textPtr: Ptr; len: INTEGER);
  233.     {$IFC NOT GENERATINGCFM}
  234.     INLINE $301F, $205F, $A256;
  235.     {$ENDC}
  236. PROCEDURE UpperText(textPtr: Ptr; len: INTEGER);
  237.     {$IFC NOT GENERATINGCFM}
  238.     INLINE $301F, $205F, $A456;
  239.     {$ENDC}
  240. PROCEDURE StripUpperText(textPtr: Ptr; len: INTEGER);
  241.     {$IFC NOT GENERATINGCFM}
  242.     INLINE $301F, $205F, $A656;
  243.     {$ENDC}
  244. {$ENDC}
  245. {  FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  246. {$IFC NOT OLDROUTINELOCATIONS }
  247. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  248. PROCEDURE C2PStrProc(aStr: UNIV Ptr);
  249. FUNCTION C2PStr(cString: UNIV Ptr): StringPtr;
  250. PROCEDURE P2CStrProc(aStr: StringPtr);
  251. FUNCTION P2CStr(pString: StringPtr): Ptr;
  252. {$ENDC}
  253. {  FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  254. {$ENDC}
  255. {  !OLDROUTINELOCATIONS }
  256. {$ALIGN RESET}
  257. {$POP}
  258.  
  259. {$SETC UsingIncludes := TextUtilsIncludes}
  260.  
  261. {$ENDC} {__TEXTUTILS__}
  262.  
  263. {$IFC NOT UsingIncludes}
  264.  END.
  265. {$ENDC}
  266.